/*
@STI LICENSE
(C) 2006-2008 Universit�t Innsbruck.

This file is part of myOntology.

myOntologyis free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

myOntologyis distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with myOntology.  If not, see <http://www.gnu.org/licenses/>.

@STI LICENSE */
package view.servlets;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.openrdf.model.URI;

import controller.elementMapper.OntologyModuleMapper;
import controller.sesameDataConnector.AbstractDataConnector;


/**
 * Servlet implementation class for Servlet: OntologyExport
 *
 */
 public class ExportOntology extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
 	 
	private static final long serialVersionUID = 2; // do not know why...
	public static Logger logger = Logger.getLogger(ExportOntology.class);

	public ExportOntology() {
		super();
	}   	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		
		
//		if ( !Login.LOGGED_IN.getValue(request) ) {			
//			response.sendRedirect( request.getContextPath() + "/login");
//			return;
//		}			
		
		response.setContentType("text/xml;charset=utf-8");
		response.setHeader("Cache-Control", "no-cache");
		response.setCharacterEncoding("UTF-8");
		
		String ret = "";
		
		
	    PrintWriter out = response.getWriter();

	    ret = export( request.getContextPath(), AbstractDataConnector.getURI( request.getParameter("id") ) );

	    
	    out.println( ret );
	}
	
	public String export( String contextPath, URI id ) {
		
		String ret = "";
	    Iterator<URI> iter = null;

		
		ret += ExportHelper.getHeader( contextPath );

	    
	    // OntologyModule:
	    try {
	    	
	    	ret += ExportHelper.getOntologyModule( id );
	    	    
		    
		    // elements belonging To OM:	   
		    ArrayList<URI> tmp;
		    
		    tmp = OntologyModuleMapper.selectClassesBelongingToOM( id );
		    if( tmp!=null ){
			    iter = tmp.iterator();
			    while( iter.hasNext() ) {
			    	
		    		ret += ExportHelper.getClass( iter.next() );
				}
		    }

		    tmp = OntologyModuleMapper.selectObjectPropertiesOfOM( id );
		    if( tmp!=null ){
			    iter = tmp.iterator();
			    while( iter.hasNext() ) {

			    	ret += ExportHelper.getObjectProperty( iter.next() );
				}
		    }
		    
		    tmp = OntologyModuleMapper.selectDatatypePropertiesOfOM( id );
		    if( tmp!=null ){
			    iter = tmp.iterator();
			    while( iter.hasNext() ) {

		    		ret += ExportHelper.getDatatypeProperty( iter.next() );
				}
		    }
	    
	    } catch( Exception e ) {
	    	logger.error( e );
	    }
	    
	    
	    ret +=
	    		"</rdf:RDF>\n";
	    
	    return ret;
	}
}
